package br.com.sgpv2.hibernate.secretaria;

import java.util.List;

import br.com.sgpv2.controler.NegocioExeception;
import br.com.sgpv2.entity.organograma.Secretaria;
import br.com.sgpv2.entity.pessoa.Contrato;

public interface SecretariaRepository {
	
	/**
	 * Método que salva uma Secretaria no sistema.
	 */
	void salvar(Secretaria secretaria);

	/**
	 * Método que busca uma Secretaria no sistema.
	 */
	Secretaria buscar(Integer pk) throws NegocioExeception;

	/**
	 * Método que altera uma Secretaria no sistema.
	 */
	void alterar(Secretaria secretaria);

	/**
	 * Método que lista todas as Secretaria do sistema.
	 */
	List<Secretaria> listar();

	/**
	 * Método que exclui um Secretaria do sistema.
	 */
	void excluir(Secretaria secretaria);

	/**
	 * Método que retorna todos os contratos de uma determinada secretaria.
	 */
	List<Contrato> listarContratosPorSecretaria(int parseInt);
	
	/**
	 * Método retorna todas as Secretarias ordenadas pelo atributo informado.
	 * @param atributoOrder
	 * @return
	 */
	List<Secretaria> listarOrder(String atributoOrder);
	
	/**
	 * Método retorna as secretarias que possuem a descricao informada.
	 * @param descricao
	 * @return
	 */
	List<Secretaria> consultarPorDescricao(String descricao);

}
